"""
    xfree.configs.testing
    ~~~~~~~~~~~~~~~~~~~~~
    文件描述：测试环境配置
    作者：xfree
    邮箱：cy_83k@qq.com
"""

from xfree.configs.default import DefaultConfig


class TestingConfig(DefaultConfig):
    # 设置为非调试模式
    DEBUG = False
    # 表明这是一个测试环境
    TESTING = True

    # 使用SQLite内存数据库，这对于测试来说很方便，不需要实际的数据库文件
    SQLALCHEMY_DATABASE_URI = "sqlite://"

    # 设置服务器名称
    SERVER_NAME = "localhost:5000"

    # 是否打印所有SQL语句，这里设置为不打印
    SQLALCHEMY_ECHO = False

    # 使用内存存储来进行全文搜索（Whooshee相关）
    WHOOSHEE_MEMORY_STORAGE = True

    CELERY_CONFIG = {
        # 使Celery任务立即执行，而不是异步执行，这在测试时很有用，方便查看结果
        "always_eager": True,
        # 确保在eager模式下异常能够正确传播
        "eager_propagates_exceptions": True,
        # 设置结果后端为缓存
        "result_backend": "cache",
        # 设置缓存后端为内存
        "cache_backend": "memory"
    }

    LOG_DEFAULT_CONF = {
        "version": 1,
        # 不禁止已存在的日志记录器
        "disable_existing_loggers": False,
        "formatters": {
            "standard": {
                # 日志格式，包括时间、日志级别、日志名称和日志消息
                "format": "%(asctime)s %(levelname)-7s %(name)-25s %(message)s"
            }
        },
        "handlers": {
            "console": {
                # 日志级别为未设置（会根据上级配置决定）
                "level": "NOTSET",
                "formatter": "standard",
                # 使用流处理器，即将日志输出到控制台
                "class": "logging.StreamHandler"
            }
        },
        # 只将日志输出到控制台，适用于测试环境
        "loggers": {
            "flask.app": {
                "handlers": ["console"],
                "level": "INFO",
                "propagate": False
            },
            "xfree": {
                "handlers": ["console"],
                "level": "WARNING",
                "propagate": False
            }
        }
    }